add model in admin site with admin.site.register

"""admin/ route에서 보여줄 정보들에 대하여 정의한다."""
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import User


class Admin(UserAdmin):
    model = User
    list_display = ["email", "nickname", "is_staff"]


admin.site.register(User, Admin)

The admin.py file is used to display your models in the Django admin panel. You can also customize your admin panel.

AbstractBaseUser를 상속한 커스텀 유저일 경우

Admin site에 모습을 드러내게 하기 위해서 반드시 django.contrib.auth.admin.UserAdmin을 확장하여야 한다. 자세한 사항은 문서와 아래 Note를 읽어보기 바란다. | 참고 코드 (allbooks)

Note

If you are using a custom ModelAdmin which is a subclass of django.contrib.auth.admin.UserAdmin, then you need to add your custom fields to fieldsets (for fields to be used in editing users) and to add_fieldsets (for fields to be used when creating a user). For example:

from django.contrib.auth.admin import UserAdmin
class CustomUserAdmin(UserAdmin):
    ...
    fieldsets = UserAdmin.fieldsets + ((None, {"fields": ["custom_field"]}),)
    add_fieldsets = UserAdmin.add_fieldsets + ((None, {"fields": ["custom_field"]}),)

ModelAdmin

doc

특별히 추가할 필드가 없는 모델을 admin site에 띄우고 싶다면 굳이 새 클래스를 만들어 pass 할 필요 없이 다음과 같이 바로 admin.site.register 하면 된다.

admin.site.register(MyModel)

The register decorator

https://docs.djangoproject.com/en/4.2/ref/contrib/admin/#the-register-decorator

from django.contrib.import admin
from .models import Author

@admin.register(Author)
class AuthorAdmin(admin.ModelAdmin):
	pass